/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.client;

import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DecoratorPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

/**
 *
 * @author Wanderley Filho
 */
public class CrudUsuarioView extends Composite implements CrudUsuarioPresent.Display {

    static TextBox tbEstado;
    static TextBox tbBairro;
    static TextBox tbCidade;
    VerticalPanel painelCadastro;
    Label lNome;
    TextBox tbNome;
    Label lCpf;
    TextBox tbCpf;
    Label lLogin;
    TextBox tbLogin;
    Label lSenha;
    PasswordTextBox pSenha;
    Label lConfSenha;
    PasswordTextBox pConfSenha;
    Label lSelecione;
    DecoratorPanel todo;
    VerticalPanel painelCadastro2;
    Label lCep;
    TextBox tbCep;
    Label lEstado;
    Label lCidade;
    Label lBairro;
    Label lEndereco;
    TextBox tbEndereco;
    Label lNumero;
    TextBox tbNumero;
    Label lTelefone;
    TextBox tbTelefone;
    Label lCelular;
    TextBox tbCelular;
    Label lEspaco;
    ListBox lista;
    Label lIdCondominio;
    TextBox tbIdCondominio;
    Button btCadastrar;

    CrudUsuarioView() {

        init();
        initWidget(painelCadastro);

    }
   

    private void init() {

        painelCadastro = new VerticalPanel();

        lNome = new Label("Nome");
        tbNome = new TextBox();

        lCpf = new Label("CPF");
        tbCpf = new TextBox();

        lLogin = new Label("Login");
        tbLogin = new TextBox();

        lSenha = new Label("Senha");
        pSenha = new PasswordTextBox();

        lConfSenha = new Label("Confirme sua senha");
        pConfSenha = new PasswordTextBox();

        lSelecione = new Label("Selecione um módulo");

        painelCadastro.add(lNome);
        painelCadastro.add(tbNome);
        painelCadastro.add(lCpf);
        painelCadastro.add(tbCpf);
        painelCadastro.add(lLogin);
        painelCadastro.add(tbLogin);
        painelCadastro.add(lSenha);
        painelCadastro.add(pSenha);
        painelCadastro.add(lConfSenha);
        painelCadastro.add(pConfSenha);
        painelCadastro.add(lSelecione);

        lista = new ListBox();

        lista.addItem("Síndico");
        lista.addItem("Morador");

        painelCadastro.add(lista);

        lIdCondominio = new Label("Identificador de condomínio");
        tbIdCondominio = new TextBox();

        painelCadastro.add(lIdCondominio);
        painelCadastro.add(tbIdCondominio);
        lIdCondominio.setVisible(false);
        tbIdCondominio.setVisible(false);

        lCep = new Label("Cep");
        tbCep = new TextBox();

        lEstado = new Label("UF");
        tbEstado = new TextBox();
        tbEstado.setMaxLength(2);
        tbEstado.setWidth("25px");

        lCidade = new Label("Cidade");
        tbCidade = new TextBox();

        lBairro = new Label("Bairro");
        tbBairro = new TextBox();

        lEndereco = new Label("Endereço");
        tbEndereco = new TextBox();

        lNumero = new Label("Número");
        tbNumero = new TextBox();

        lTelefone = new Label("Telefone(Fixo)");
        tbTelefone = new TextBox();

        lCelular = new Label("Celular");
        tbCelular = new TextBox();

        lEspaco = new Label(" ");

        btCadastrar = new Button("Cadastrar");

        painelCadastro.add(lCep);
        painelCadastro.add(tbCep);
        painelCadastro.add(lEstado);
        painelCadastro.add(tbEstado);
        painelCadastro.add(lBairro);
        painelCadastro.add(tbBairro);
        painelCadastro.add(lCidade);
        painelCadastro.add(tbCidade);
        painelCadastro.add(lEndereco);
        painelCadastro.add(tbEndereco);
        painelCadastro.add(lNumero);
        painelCadastro.add(tbNumero);
        painelCadastro.add(lTelefone);
        painelCadastro.add(tbTelefone);
        painelCadastro.add(lCelular);
        painelCadastro.add(tbCelular);
        painelCadastro.add(lEspaco);
        painelCadastro.add(btCadastrar);


        todo = new DecoratorPanel();
        todo.add(painelCadastro);

    }

    @Override
    public Button getBtCadastrar() {
        return btCadastrar;
    }

    @Override
    public ListBox getLista() {
        return lista;
    }

    @Override
    public void isMorador() {

        if (lista.getSelectedIndex() == 1) {
            lIdCondominio.setVisible(true);
            tbIdCondominio.setVisible(true);

        } else {
            lIdCondominio.setVisible(false);
            tbIdCondominio.setVisible(false);
        }
    }

    @Override
    public TextBox getTbCep() {
        return tbCep;
    }
    
    
     @Override
    public  void doGet(String cep) {
        String url = "http://cep.republicavirtual.com.br/web_cep.php?cep=" + cep + "&formato=json";

        RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url));

        try {
            Request request = builder.sendRequest(null, new RequestCallback() {
                public void onError(Request request, Throwable exception) {
                    // Couldn't connect to server (could be timeout, SOP violation, etc.)     
                }

                public void onResponseReceived(Request request, Response response) {
                    if (200 == response.getStatusCode()) {
                        JSONValue jsonVal = JSONParser.parseStrict(response.getText());
                        JSONObject jsonObj = jsonVal.isObject();

                        String uf = jsonObj.get("uf").toString();
                        String cidade = jsonObj.get("cidade").toString();
                        String bairro = jsonObj.get("bairro").toString();

                        tbEstado.setText(uf.substring(1, uf.length() - 1));
                        tbCidade.setText(cidade.substring(1, cidade.length() - 1));
                        tbBairro.setText(bairro.substring(1, bairro.length() - 1));

                    } else {

                    }
                }
            });
        } catch (RequestException e) {
            // Couldn't connect to server        
        }
    }
}
